Data processing systems used for complex real-time control of rotating machine applications, such as engine and robotic control systems, continually require more precise control, faster response, and more input/output (I/O) capability. As a result, the need for improved data processing by a data processing system has grown significantly in recent years. While modern microprocessors and microcontrollers have been able to accommodate these increased performance needs, the ability to provide real-time test coverage for these integrated circuit devices and the software they contain has not been accommodated.
For example, a modern engine control system, such as for controlling the operation of an automobile engine, performs such functions as monitoring the current location, speed, and acceleration of a crank shaft or cam, controlling fuel injection into each cylinder by starting and stopping fuel pulses at precise times, and controlling spark plugs for each cylinder by providing a spark pulse of a precisely controlled given duration.
An engine cycle is the number of crank shaft rotations that occur from one spark plug firing to the next. In a four stroke engine having four cylinders, this would be two complete revolutions of the crank shaft. Given a maximum engine speed of approximately one hundred revolutions per second, a total of fifty engine cycles would be processed in one second. Therefore, each engine cycle would take approximately twenty milliseconds. During this twenty millisecond time it would be necessary for the microcontroller to detect seventy-two teeth marking the location of the crank shaft, and perform certain tasks, such as, turning the fuel injectors on and off for four cylinders at the correct time for the correct amount of time, and turning on and off four spark plugs at the precise time. In a typical automobile engine, just these basic engine control functions result in the detection and control of over 4400 events in just one-second. In addition to these basic functions, many other synchronous and asynchronous events need to be handled. It would be prohibitively expensive and time consuming to test all combinations and permutations of the synchronous and asynchronous signals necessary to control the engine relative to each other. For example, if desirable to determine how a specific asynchronous event effects performance during an acceleration period that lasts as short as 10 seconds, in would be necessary to perform an interrupt repeatedly between the beginning of the acceleration cycle and the end of the acceleration cycle in order to assure accurate test coverage.
Current testing of such real-time angle based systems is difficult and requires manual setup, execution, and analysis of testing vectors. The amount of time taken to perform each individual test can be relatively long because testing of as many data points as possible is desirable in order to implement a near real-time analysis. For example, in order for a test engineer to devise the appropriate setup to provide a system the appropriate stimulus, execute the stimulus, obtain results and analyze them, can take several hours for a single test point. Analyzing a minimal set of points to simulate real time, as discussed above, can require thousands of individual tests requiring thousands of hours. Also, because of the complexity of today's real-time angle/time based systems, testing must be at an application, or system, level, with a large number of test cases. In addition, testing must be performed in real time, including dynamic test cases, and must be repeatable and quantifiable.
Therefore, it would be desirable for an automated test system for verifying real-time angle/time based systems that allowed for efficient setup, execution and analysis of test stimuli.